/**
 * 从给定的数组中抽取一个幸运项
 * 模拟抽奖，数据一般为多个姓名构成
 * @author guohengxi.dennis@gmail.com
 * @version alpha-0.1
 */
(function($){

	//主要方法体
	$.fn.lucky = function(option){
		var $lucky = $(this);
		var opts = $.extend({},$.fn.lucky.defaults,option);
		var aniTime = Math.floor(opts.Interval/2);
		$lucky.append('<div class="guo-lucky-box" style="color:'+opts.FontColor+';text-align:center;display:block;width:100%;position:relative;overflow:hidden;"></div>');
		var $box = $lucky.find('div.guo-lucky-box');
		var textShadow = "text-shadow:0 0 "+opts.FontShadow.opacity+" "+opts.FontShadow.color+";";
		var boxBg = "background-color:"+opts.ItemBgColor+";";
		var itemStyle = "style='background-color:"+opts.ItemBgColor+";"+
						"text-shadow:0 0 "+opts.FontShadow.opacity+" "+opts.FontShadow.color+";"+
						"box-shadow:0 0 5px 2px "+opts.FontShadow.color+";"+
						"'";
		//向BOX中填充数组
		function init(){
			var len = opts.Arr.length;
			var items = [];
			var arr = opts.Arr;

			//调整数组位奇数位
            if(len %2 == 0){
                arr[len] = choseOne();
            }

			for(var i=0; i<arr.length; i++){
				items.push('<div class="guo-lucky-item" '+itemStyle+'>'+arr[i]+'</div>');
			}
			$box.append(items.join(''));
		}
		//调整选框的问题
		function resizeBox()
		{
			var b_h = $box.height();
			var p_h = $lucky.height();
			if(b_h > p_h){
				var t = b_h / 3;
				$box.css('margin-top',"-"+t+'px');
			}
		}
		//开始滚动
		function roll(){
			var lastObj = $('div.guo-lucky-item').last();
			var newObj = $('<div class="guo-lucky-item" '+itemStyle+'>'+lastObj.html()+'</div>');
			lastObj.remove();

			newObj.css({'opacity':0});
			$box.prepend(newObj);

			var firstObj = $('div.guo-lucky-item').first();
			firstObj.animate({'opacity':0.1},aniTime);
			
			resize();
			resizeBox();
		}
		//随机选择一个
		function choseOne()
		{
		    var max = opts.Arr.length,
		        index = Math.floor(Math.random()*max),
		        lucky = opts.Arr[index];
		    return lucky;
		}

		//调整字体的大小
		function resize(){
			var arr = $('div.guo-lucky-item');
			var len = arr.length;
			var half = Math.floor(len / 2);
			var index = len%2==0 ? half-1 : half;
			arr.eq(index).css({
				'font-size':opts.FontSize+'px',
				'opacity':1,
				'filter':'alpha(opacity=100)'
			});

			var i_size =  opts.FontSize / index ;
			for(var i=0;i<index;i++){
				//如果设置了改变字体才做改变
				var size = opts.FontResize ? ((i==0? 0.5 : i) * i_size).toFixed(2) : opts.FontSize;
				var opacity = (i/len == 0) ? 0.1 : (i/len == 1) ? 0.8 : (i/len).toFixed(2);

				var css = {
					'font-size':size+'px',
					'opacity':opacity,
					'filter':'alpha(opacity='+(100*opacity)+')'
				};
				arr.eq(i).css(css);
				arr.eq(len-1-i).css(css);
			}
		}
		//对外提供一个可控对象
		var control = {
			/**
			 * 重新开始运作
			 * @return {[type]} [description]
			 */
			start:function(){
				$.fn.lucky.interval = setInterval(roll,opts.Interval);
			},
			/**
			 * 暂停滚动并且选出当前的幸运者
			 * @return 幸运者的名称
			 */
			pause:function(){
				clearInterval($.fn.lucky.interval);
			},
			/**
			 * 选出幸运项
			 * @return {[type]} [description]
			 */
			chose:function(){
				var luckyOne = null;
				$('div.guo-lucky-item').each(function(i,v){
					var $this = $(v);
					if(parseInt($this.css('opacity')) === 1){
						luckyOne  = $this.html();
						return;
					}
				});
				return luckyOne;
			}
		};

		init();
		control.start();

		return control;
    };

	$.lucky = {};
	//默认属性
	$.fn.lucky.defaults = {
		Arr 		: ['张山','李四','王二','麻子','王五','李三','张四'],  /*要随机的数组*/
		FontSize 	: 80,  /*幸运者的字体大小,单位px*/
		FontResize 	: true,  /*改变字体的大小*/
		FontColor	: '#fff', /*文字颜色值*/
		FontShadow 	: {
			color:'#000',	/*阴影颜色*/
			opacity:'10px'	/*阴影模糊度*/
		},
		ItemBgColor	: '#dc0606',	/*项目背景色*/
		Interval 	: 600  /*滚动的时间频率*/
	};
})(jQuery);